package com.zenithmind.news.service;

import com.zenithmind.news.pojo.vo.NewsVO;

import java.util.List;

/**
 * 新闻查询服务接口 - 遵循接口隔离原则
 * 专门负责新闻的各种查询操作
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
public interface NewsQueryService {

    /**
     * 查询热门新闻
     * 
     * @param limit 限制数量
     * @return 新闻列表
     */
    List<NewsVO> getHotNews(Integer limit);

    /**
     * 查询推荐新闻
     * 
     * @param userId 用户ID
     * @param limit 限制数量
     * @return 新闻列表
     */
    List<NewsVO> getRecommendNews(String userId, Integer limit);

    /**
     * 查询置顶新闻
     * 
     * @param categoryId 分类ID
     * @param limit 限制数量
     * @return 新闻列表
     */
    List<NewsVO> getTopNews(String categoryId, Integer limit);

    /**
     * 查询相关新闻
     * 
     * @param newsId 新闻ID
     * @param limit 限制数量
     * @return 新闻列表
     */
    List<NewsVO> getRelatedNews(String newsId, Integer limit);

    /**
     * 根据标签查询新闻
     * 
     * @param tags 标签列表
     * @param limit 限制数量
     * @return 新闻列表
     */
    List<NewsVO> getNewsByTags(List<String> tags, Integer limit);

    /**
     * 搜索新闻
     * 
     * @param keyword 关键词
     * @param limit 限制数量
     * @return 新闻列表
     */
    List<NewsVO> searchNews(String keyword, Integer limit);
}
